{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from DBReader import ASyncReader\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Open the dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-------------------------------------------------------------------------\n",
      "- Sensors available:\n",
      "-     scala\n",
      "-     radar_ch2\n",
      "-     can\n",
      "-     camera\n",
      "-     radar_ch1\n",
      "-     radar_ch3\n",
      "-     radar_ch0\n",
      "-     gps\n",
      "-\n",
      "- You might use function \"setSensorFilters\" to select sensors you want to read!\n",
      "-------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "db = ASyncReader('/media/julien/HD_RADAR1/FinalDataset/RADIal/RECORD@2020-11-22_12.28.47')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['scala' 'radar_ch2' 'can' 'camera' 'radar_ch1' 'radar_ch3' 'radar_ch0'\n",
      " 'gps']\n",
      "Used filters:\n",
      "['scala']\n"
     ]
    }
   ],
   "source": [
    "# if you leave the default parameters, it considers all the sensors\n",
    "# if you want only a subset of sensor, use the function setSensorFilters\n",
    "print(db.getSensorFilters())\n",
    "db.setSensorFilters(['scala'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Available sensors:\n",
      "# Sensor:  camera\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_camera.mjpg\n",
      "\t- Nb Samples:  9670\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  9.397733712512927 ms\n",
      "# Sensor:  scala\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_scala.bin\n",
      "\t- Nb Samples:  61294\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  1.4832435801220347 ms\n",
      "# Sensor:  radar_ch0\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_radar_ch0.bin\n",
      "\t- Nb Samples:  6683\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  13.557683674996257 ms\n",
      "# Sensor:  radar_ch1\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_radar_ch1.bin\n",
      "\t- Nb Samples:  6685\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  13.58848167539267 ms\n",
      "# Sensor:  can\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_can.bin\n",
      "\t- Nb Samples:  6808\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  13.34502893654524 ms\n",
      "# Sensor:  radar_ch2\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_radar_ch2.bin\n",
      "\t- Nb Samples:  6684\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  13.587971274685817 ms\n",
      "# Sensor:  radar_ch3\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_radar_ch3.bin\n",
      "\t- Nb Samples:  6682\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  13.560011972463334 ms\n",
      "# Sensor:  gps\n",
      "\t- filename:  /media/julien/HD_RADAR1/FinalDataset/Pitch0Deg/RECORD@2020-11-22_12.28.47/RECORD@2020-11-22_12.28.47_gps.ascii\n",
      "\t- Nb Samples:  1006\n",
      "\t- Duration:  90 sec\n",
      "\t- Update rate:  89.65561033797218 ms\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# use print_info function to get all the details of the database contant\n",
    "db.print_info()\n",
    "print('')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Go through the dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "timestamp:  243988403 timeofissue:  245074808 Sensor:  scala sample:  59019\n",
      "timestamp:  244028322 timeofissue:  245116140 Sensor:  scala sample:  59020\n",
      "timestamp:  244068240 timeofissue:  245153241 Sensor:  scala sample:  59021\n",
      "timestamp:  244108130 timeofissue:  245192105 Sensor:  scala sample:  59022\n",
      "timestamp:  244148027 timeofissue:  245229378 Sensor:  scala sample:  59023\n",
      "timestamp:  244187870 timeofissue:  245268170 Sensor:  scala sample:  59024\n",
      "timestamp:  244227716 timeofissue:  245309794 Sensor:  scala sample:  59025\n",
      "timestamp:  244267539 timeofissue:  245353257 Sensor:  scala sample:  59026\n",
      "timestamp:  244307411 timeofissue:  245388742 Sensor:  scala sample:  59027\n",
      "timestamp:  244347339 timeofissue:  245429720 Sensor:  scala sample:  59028\n",
      "timestamp:  244387333 timeofissue:  245471829 Sensor:  scala sample:  59029\n",
      "timestamp:  244427359 timeofissue:  245509158 Sensor:  scala sample:  59030\n",
      "timestamp:  244467449 timeofissue:  245548216 Sensor:  scala sample:  59031\n",
      "timestamp:  244507528 timeofissue:  245587565 Sensor:  scala sample:  59032\n",
      "timestamp:  244547548 timeofissue:  245629982 Sensor:  scala sample:  59033\n",
      "timestamp:  244587472 timeofissue:  245673780 Sensor:  scala sample:  59034\n",
      "timestamp:  244627360 timeofissue:  245713948 Sensor:  scala sample:  59035\n",
      "timestamp:  244667193 timeofissue:  245752325 Sensor:  scala sample:  59036\n",
      "timestamp:  244707034 timeofissue:  245790679 Sensor:  scala sample:  59037\n",
      "timestamp:  244746852 timeofissue:  245830265 Sensor:  scala sample:  59038\n",
      "timestamp:  244786739 timeofissue:  245868761 Sensor:  scala sample:  59039\n",
      "timestamp:  244826662 timeofissue:  245906612 Sensor:  scala sample:  59040\n"
     ]
    }
   ],
   "source": [
    "# Create an iterator on the dataset\n",
    "ite = iter(db)\n",
    "\n",
    "# iterate through the entire dataset\n",
    "# it replays the data with the same order it has been recorded\n",
    "# it s sequential, that is to say each data will be from one of the sensor, but\n",
    "# not all at the same time\n",
    "# Please, take into account that the timeofissue are ordered but the timestamp are from the sensor, so \n",
    "# an offset has to be applied\n",
    "for i in range(len(db)):\n",
    "    timestamp,timeofissue,sample,sensor,data=next(ite)\n",
    "    print('timestamp: ',timestamp,'timeofissue: ',timeofissue,'Sensor: ',sensor,'sample: ',sample)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'scala'"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# or we can read a specific example\n",
    "timestamp,timeofissue,sample,sensor,sample_number,data = db.GetSensorData(100)\n",
    "sensor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f5e7661ea90>]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(data[:,0],data[:,1],'r.')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
